Use case: Single channel DAC transfer using DMA ¶
This use case demonstrates how to transfer samples to a DAC channel using DMA.
Sequence diagram ¶
Code snippet ¶
|
HAL1 |
HAL2 |
|---|---|
uint32_t aEscalator12bit[6] = {0x0, 0x330, 0x660, 0x990, 0xCC0, 0xFF0};
DAC_ChannelConfTypeDef sConfig;
sConfig.DAC_HighFrequency = DAC_HIGH_FREQUENCY_INTERFACE_MODE_ABOVE_80MH;
sConfig.DAC_DMADoubleDataMode = DISABLE;
sConfig.DAC_SignedFormat = DISABLE;
sConfig.DAC_SampleAndHold = DAC_SAMPLEANDHOLD_DISABLE;
sConfig.DAC_Trigger = DAC_TRIGGER_SOFTWARE;
sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE;
sConfig.DAC_ConnectOnChipPeripheral = DAC_CHIPCONNECT_EXTERNAL;
sConfig.DAC_UserTrimming = DAC_TRIMMING_FACTORY;
sConfig.DAC_TrimmingValue = 31;
HAL_DAC_ConfigChannel(&hdac1, &sConfig, DAC_CHANNEL_1);
HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_1, DAC_ALIGN_12B_R, 2048);
HAL_DAC_Start_DMA(&hdac1, DAC_CHANNEL_1, aEscalator12bit, 6, DAC_ALIGN_12B_R);
HAL_DAC_Stop_DMA(&hdac1, DAC_CHANNEL_1);
|
uint32_t aEscalator12bit[6] = {0x0, 0x330, 0x660, 0x990, 0xCC0, 0xFF0};
hal_dac_config_t p_config;
hal_dac_channel_config_t p_config1;
p_config.high_frequency_mode = HAL_DAC_HIGH_FREQ_MODE_ABOVE_80MHZ;
HAL_DAC_SetConfig(&hdac, &p_config);
p_config1.data_sign_format = HAL_DAC_SIGN_FORMAT_UNSIGNED;
p_config1.data_trigger = HAL_DAC_TRIGGER_TIM1_TRGO;
p_config1.output_buffer = HAL_DAC_OUTPUT_BUFFER_ENABLED;
p_config1.output_connection = HAL_DAC_OUTPUT_CONNECTION_EXTERNAL;
p_config1.alignment = HAL_DAC_DATA_ALIGN_12_BITS_RIGHT;
HAL_DAC_SetConfigChannel(&hdac, HAL_DAC_CHANNEL_1,
&p_config1);
HAL_DAC_SetChannelAlignment(&hdac, HAL_DAC_CHANNEL_1,
HAL_DAC_DATA_ALIGN_12_BITS_RIGHT);
HAL_DAC_SetChannelData(&hdac, HAL_DAC_CHANNEL_1,
2048);
HAL_DAC_StartChannel_DMA(&hdac, HAL_DAC_CHANNEL_1, aEscalator12bit, 6);
HAL_DAC_StopChannel_DMA(&hdac, HAL_DAC_CHANNEL_1);
|
Key changes ¶
In HAL2, channel configuration and data setting are performed using channel-based APIs.
In HAL2, DMA transfer start/stop operations are performed per channel using
HAL_DAC_StartChannel_DMA()andHAL_DAC_StopChannel_DMA().

